#ifndef EMS_UTILS_HARDWARE_INFO_H
#define EMS_UTILS_HARDWARE_INFO_H

#include <string>
#include <vector>

namespace ems {
namespace utils {

class HardwareInfo {
public:
    static std::string getDeviceId();
    
    static std::string getMacAddress();
    
    static std::string getCpuId();
    
    static std::string getMachineId();
    
    static std::string getSystemUUID();
    
private:
    static std::string executeCommand(const std::string& cmd);
    static std::string cleanupId(const std::string& id);
    static std::string generateFallbackId();
};

}  // namespace utils
}  // namespace ems

#endif  // EMS_UTILS_HARDWARE_INFO_H
